/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BUS;

import DAO.QuanDAO;
import DTO.QuanDTO;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author HuuTri
 */
public class QuanBUS {
    
    /**
     * Kiểm tra mã quận có tồn tại hay không
     * @param maquan
     * @return 
     */
    public static boolean checkExistMaQuan(String id, String maquan, String matinh) {
        return QuanDAO.checkExistMaQuan(Integer.parseInt(id), maquan, matinh);
    }
    
    /*Lấy thông tin bảng hiển thị*/
    public static DefaultTableModel getTableModel() {
        return QuanDAO.getTableModel();
    }
    
    /*Lấy thông tin các object*/
    public static Object getValue(TableModel tableModel, int row, String columnName) {
        int index = 1;
        Object value = "";
        switch (columnName) {
            case QuanDTO.ID: 
                value =  tableModel.getValueAt(row, index - 1);
                break;
            case QuanDTO.MA_QUAN: 
                value = tableModel.getValueAt(row, index);
                break;
            case QuanDTO.TEN_QUAN: 
                value = tableModel.getValueAt(row, index + 1);
                break;
            case QuanDTO.SLDAILY_TOIDA: 
                value = tableModel.getValueAt(row, index + 2);
                break;
            case QuanDTO.MO_TA: 
                value = tableModel.getValueAt(row, index + 3);
                break;
        }
        if (value != null) 
            return value;
        else 
            return " ";
    }

    /*Thay đổi thông tin của một bảng sẳn có*/
    public static void setValue(TableModel tableModel, int row, String columnName, Object value) {
        int index = 1;
        switch (columnName) {
            case QuanDTO.ID: tableModel.setValueAt(value, row, index - 1); break;
            case QuanDTO.MA_QUAN: tableModel.setValueAt(value, row, index); break;
            case QuanDTO.TEN_QUAN: tableModel.setValueAt(value, row, index + 1); break;
            case QuanDTO.SLDAILY_TOIDA: tableModel.setValueAt(value, row, index + 2); break;
            case QuanDTO.MO_TA: tableModel.setValueAt(value, row, index + 3); break;
            default:        }
    }
    /*Xóa một record khỏi database*/
    public static boolean deleteRecord(String id) {
        QuanDTO quanDTO = new QuanDTO();
        quanDTO.setId(Integer.parseInt(id));
        
        return QuanDAO.delete(quanDTO); // Gọi DAO thực hiện thao tác xóa
    }
    /*Thêm một record vào database*/
    public static boolean insertRecord(String id, String maquan, String tenquan, String soluongdailytoida, 
            String matinh, String mota) {
        QuanDTO quan = new QuanDTO(
                Integer.parseInt(id), 
                maquan, 
                tenquan,
                Integer.parseInt(soluongdailytoida), 
                matinh, 
                mota);
        return QuanDAO.insert(quan);
    }
    
    /*Lấy danh sách các tỉnh*/
    public static DefaultComboBoxModel getTinhList() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        List<String> listTinh = QuanDAO.getTinhList();
        int count = listTinh.size();
        
        for (int i = 0; i < count; i++ ) {
            model.addElement(listTinh.get(i));
        }
        
        return model;
    }
    
    /*Cập nhật thông tin quận*/ 
    public static boolean updateRecord(String id, String maquan, String tenquan, 
            String matinh, String soluongtoida, String mota) {
        QuanDTO quan = new QuanDTO(
                Integer.parseInt(id),
                maquan, 
                tenquan,
                Integer.parseInt(soluongtoida), 
                matinh,
                mota
                );
        return QuanDAO.update(quan);
    }
    
    /*Tạo mã quận hiển thị*/
    public static String getStringOfMaQuanAndMaTinh(String maquan, String matinh) {
        return matinh + "." + maquan;
    }
    
    /*Tách mã quận và mã tỉnh từ chuỗi mã số*/
    public static String[] getMaTinhAndMaQuanFromString(String maso) {
        return maso.split("\\.");
    }
    
    /*Lấy mã quận mới*/
    public static int getNewMaQuan() {
        return QuanDAO.getNewMaQuan();
    }
    
    /*Lấy Mã Quận từ tên quận*/
    public static String getMaQuanFromTenQuan(String tenquan) {
        String res = "";
        String[] temp = tenquan.split(" ");
        if (tenquan.isEmpty()) return "";
        for(String tmp: temp) {
            tmp = tmp.trim();
            if (!tmp.isEmpty())
            {
                res += tmp.toUpperCase().charAt(0);
            }
        }
        
        return res;
    }
}
